home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / tools / czesc_3 / phoonsrc / libi / atime.c < prev    next >
C/C++ Source or Header  |  1994-02-23  |  1KB  |  59 lines

  1. /*
  2.  * atime.c: grapped and modified from gerlib:amiga/normal/getsystime.c and
  3.  *                      gerlib:amiga/normal/time.c
  4.  *
  5.  * Created: Wed Feb 23 16:45:41 1994 too
  6.  * Last modified: Wed Feb 23 17:01:15 1994 too
  7.  *
  8.  * HISTORY
  9.  * $Log: $
  10.  */
  11.  
  12. #include <exec/types.h>
  13. #include <exec/io.h>
  14. #include <exec/memory.h>
  15. #include <exec/ports.h>
  16. #include <devices/timer.h>
  17. #include <dos/dos.h>
  18. #include <dos/dosextens.h>
  19.  
  20. #include <inline/exec.h>
  21. #include <inline/dos.h>
  22.  
  23. ULONG atime(ULONG * t)
  24. {
  25.   struct timerequest * TimerIO;
  26.   struct MsgPort * TimerMP;
  27.  
  28.   ULONG secs = 0;
  29.   
  30.   if ( (TimerMP = CreateMsgPort()) )
  31.     {
  32.       if ( (TimerIO = (struct timerequest *)
  33.         CreateIORequest(TimerMP, sizeof(struct timerequest))) )
  34.     {
  35.       LONG error;
  36.       /* Open with UNIT_VBLANK, but any unit can be used */
  37.       
  38.       if (!(error = OpenDevice(TIMERNAME, UNIT_VBLANK,
  39.                    (struct IORequest *)TimerIO, 0L)))
  40.         {
  41.      /*
  42.       * Issue the command and wait for it to finish, then get the reply
  43.       */
  44.           TimerIO->tr_node.io_Command = TR_GETSYSTIME;
  45.           DoIO((struct IORequest *) TimerIO);
  46.  
  47.           secs  = TimerIO->tr_time.tv_secs;
  48.           
  49.           CloseDevice((struct IORequest *) TimerIO);
  50.         }
  51.       DeleteIORequest((struct IORequest *)TimerIO);
  52.     }
  53.       DeleteMsgPort(TimerMP);
  54.     }
  55.   if (t)
  56.     *t = secs;
  57.   return secs;
  58. }
  59.